﻿//=============================================================================
// Библиотека 'WPFExcelReport' предназначена для связи и передачи данных c PLC
//=============================================================================

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

// Структуры PLC
namespace WPFExcelReport
{
   
    /// <summary>
    /// Переменная для чтения
    /// </summary>
    internal class ItemRead
    {
        #region Свойства

        /// <summary>
        /// Имя переменной
        /// </summary>
        public string Name;

        /// <summary>
        /// Адрес переменной
        /// </summary>
        public string Addr;


        #endregion

        #region Конструктор

        /// <summary>
        /// Конструктор объекта ItemRead
        /// </summary>
        /// <param name="name"> имя переменной</param>
        /// <param name="addr"> адрес переменной</param>
        internal ItemRead(string name, string addr)
        {
            this.Name = name;
            this.Addr = addr;

        }

        #endregion

    }

    /// <summary>
    /// Дескр-ор переменной для чтения
    /// </summary>
    internal class HandlItemRead
    {
        #region Свойства

        /// <summary>
        /// Имя переменной
        /// </summary>
        public string Name;

        /// <summary>
        /// Адрес переменной
        /// </summary>
        public string Addr;


        #endregion

        #region Конструктор

        /// <summary>
        /// Конструктор объекта HandlItemRead
        /// </summary>
        /// <param name="name"> имя переменной</param>
        /// <param name="addr"> адрес переменной</param>
        internal HandlItemRead(string name, string addr)
        {
            this.Name = name;
            this.Addr = addr;

        }

        #endregion

    }

    /// <summary>
    /// Значение переменной
    /// </summary>
    internal class ItemValue
    {
        #region Свойства

        /// <summary>
        /// Имя переменной
        /// </summary>
        public string Name;

        /// <summary>
        /// Адрес переменной
        /// </summary>
        public string Addr;

        /// <summary>
        /// Значение переменной
        /// </summary>
        public object Value;


        #endregion

        #region Конструктор

        /// <summary>
        /// Конструктор объекта ItemValue
        /// </summary>
        /// <param name="name"> имя переменной</param>
        /// <param name="addr"> адрес переменной</param>
        /// <param name="value"> значение переменной</param>
        internal ItemValue(string name, string addr, object value)
        {
            this.Name = name;
            this.Addr = addr;
            this.Value = value;
        }

        #endregion

    }
    
    /// <summary>
    /// Переменная для записи
    /// </summary>
    internal class ItemWrite
    {
        #region Свойства

        /// <summary>
        /// Имя переменной
        /// </summary>
        public string Name;

        /// <summary>
        /// Адрес переменной
        /// </summary>
        public string Addr;


        #endregion

        #region Конструктор

        /// <summary>
        /// Конструктор объекта ItemWrite
        /// </summary>
        /// <param name="name"> имя переменной</param>
        /// <param name="addr"> адрес переменной</param>
        internal ItemWrite(string name, string addr)
        {
            this.Name = name;
            this.Addr = addr;

        }

        #endregion

    }

    /// <summary>
    /// Дескр-ор переменной для записи
    /// </summary>
    internal class HandlItemWrite
    {
        #region Свойства

        /// <summary>
        /// Имя переменной
        /// </summary>
        public string Name;

        /// <summary>
        /// Адрес переменной
        /// </summary>
        public string Addr;

        /// <summary>
        /// Значение переменной
        /// </summary>
        public object Value;


        #endregion

        #region Конструктор

        /// <summary>
        /// Конструктор объекта HandlItemWrite
        /// </summary>
        /// <param name="name"> имя переменной</param>
        /// <param name="addr"> адрес переменной</param>
        /// <param name="val"> значение переменной</param>
        internal HandlItemWrite(string name, string addr, object val)
        {
            this.Name = name;
            this.Addr = addr;
            this.Value = val;
        }

        #endregion

    }

    /// <summary>
    /// Класс-описатель принятых данных
    /// </summary>
    internal class ReadDataEventArgs : EventArgs
    {
        /// <summary>
        /// Принятые переменные
        /// </summary>
        public List<ItemValue> Vars;

        /// <summary>
        /// Конструктор объекта ReadDataEventArgs
        /// </summary>
        internal ReadDataEventArgs(List<ItemValue> values)
        {
            Vars = values;                       
        }

    }

   
    }

    


